package com.ruoyi.web.controller.mes;

import com.github.pagehelper.PageHelper;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.web.domain.mes.MesCustom;
import com.ruoyi.web.domain.vo.BigScreenVo;
import com.ruoyi.web.domain.vo.ZTScreenVo;
import com.ruoyi.web.service.BigScreenService;
import com.ruoyi.web.vo.MachineTask;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@RestController
@RequestMapping("/bigScreen")
public class BigScreenController extends BaseController {
    @Resource
    private BigScreenService bigScreenService;

    /**
     * 左上角查询 - 查询各机台实际用纸令数（一、四车间）
     * @Date: 2024年7月22日
     * @Auth: 张恒
     */
    @GetMapping("/getMachineLing")
    public AjaxResult getMachineLing(BigScreenVo bigScreenVo){
        List<BigScreenVo> machineLing = bigScreenService.getMachineLing(bigScreenVo);
        return AjaxResult.success(machineLing);
    }

    /**
     * 中间查询 - 查询当日实际用纸总令数（一、四车间）
     * @Date: 2024年7月22日
     * @Auth: 张恒
     */
    @GetMapping("/getSumLing")
    public AjaxResult getSumLing(BigScreenVo bigScreenVo){
        BigDecimal sumLing = bigScreenService.getSumLing(bigScreenVo);
        return AjaxResult.success(sumLing == null ? 0 : sumLing);
    }

    /**
     * 左上角查询 - 查询各机台装订报工数量（二、三车间）
     * @Date: 2024年7月23日
     * @Auth: 张恒
     */
    @GetMapping("/getMachineBinding")
    public AjaxResult getMachineBinding(BigScreenVo bigScreenVo){
        List<BigScreenVo> bigScreenVos = bigScreenService.getMachineBinding(bigScreenVo);
        return AjaxResult.success(bigScreenVos);
    }

    /**
     * 中间查询 - 查询当日报工汇总册数（二、三车间）
     * @Date: 2024年7月23日
     * @Auth: 张恒
     */
    @GetMapping("/getSumBinding")
    public AjaxResult getSumBinding(BigScreenVo bigScreenVo){
        BigDecimal sumLing = bigScreenService.getSumBinding(bigScreenVo);
        return AjaxResult.success(sumLing);
    }

    /**
     * 中间查询 - 查询生产单信息（全部车间）
     * @Date: 2024年7月22日
     * @Auth: 张恒
     */
    @GetMapping("/getSumProduce")
    public AjaxResult getSumProduce(BigScreenVo bigScreenVo){
        BigScreenVo screenVo = bigScreenService.getSumProduce(bigScreenVo);
        return AjaxResult.success(screenVo);
    }

    /**
     * 右上角查询 - 查询生产单信息（全部车间）
     * @Date: 2024年7月23日
     * @Auth: 张恒
     */
    @GetMapping("/getProduce")
    public AjaxResult getProduce(BigScreenVo bigScreenVo){
        List<BigScreenVo> list = bigScreenService.getProduce(bigScreenVo);
        return AjaxResult.success(list);
    }


    /**
     * 数据中台 - 设备类型数量
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 设备类型数量")
    @Anonymous
    @GetMapping("/getMachineCount_ZT")
    public AjaxResult getMachineCount_ZT(ZTScreenVo ztScreenVo){
        List<ZTScreenVo> list = bigScreenService.getMachineCount_ZT(ztScreenVo);
        return AjaxResult.success(list);
    }

    /**
     * 数据中台 - 设备名称,环节,运行状态
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 设备名称,环节,运行状态")
    @Anonymous
    @GetMapping("/getMachineInfo_ZT")
    public TableDataInfo getMachineInfo_ZT(ZTScreenVo ztScreenVo){
        startPage();
        List<ZTScreenVo> list = bigScreenService.getMachineInfo_ZT(ztScreenVo);
        return getDataTable(list);
    }

    /**
     * 数据中台 - 产线运行数量
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 产线运行数量")
    @Anonymous
    @GetMapping("/getLineCount_ZT")
    public AjaxResult getLineCount_ZT(ZTScreenVo ztScreenVo){
        List<ZTScreenVo> list = bigScreenService.getLineCount_ZT(ztScreenVo);
        return AjaxResult.success(list);
    }

    /**
     * 数据中台 - 原料仓库
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 原料仓库")
    @Anonymous
    @GetMapping("/getMaterial_ZT")
    public AjaxResult getMaterial_ZT(ZTScreenVo ztScreenVo){
        List<ZTScreenVo> list = bigScreenService.getMaterial_ZT(ztScreenVo);
        return AjaxResult.success(list);
    }

    /**
     * 数据中台 - 生产计划
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 生产计划")
    @Anonymous
    @GetMapping("/getProducePlan_ZT")
    public AjaxResult getProducePlan_ZT(ZTScreenVo ztScreenVo){
        List<ZTScreenVo> list = bigScreenService.getProducePlan_ZT(ztScreenVo);
        return AjaxResult.success(list);
    }

    /**
     * 数据中台 - 产量情况
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 产量情况")
    @Anonymous
    @GetMapping("/getProduceYield_ZT")
    public AjaxResult getProduceYield_ZT(ZTScreenVo ztScreenVo){
        List<ZTScreenVo> list = bigScreenService.getProduceYield_ZT(ztScreenVo);
        return AjaxResult.success(list);
    }

    /**
     * 数据中台 - 生产明细
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 生产明细")
    @Anonymous
    @PostMapping("/getProduceInfo_ZT")
    public TableDataInfo getProduceInfo_ZT(@RequestBody Map<String, Object> params){
        MachineTask m = new MachineTask();
        PageHelper.startPage((Integer) params.get("pageNum"), (Integer) params.get("pageSize"));
        m.setParams(params);
        List<MachineTask> machineTask = bigScreenService.getProduceInfo_ZT(m);
        return getDataTable(machineTask);
    }

    /**
     * 数据中台 - 本年度产量走势分析
     * @Date: 2024年7月24日
     * @Auth: levicash
     */
    @ApiOperation("数据中台 - 本年度产量走势分析")
    @Anonymous
    @GetMapping("/getYearTrend_ZT")
    public AjaxResult getYearTrend_ZT(ZTScreenVo ztScreenVo){
        List<ZTScreenVo> list = bigScreenService.getYearTrend_ZT(ztScreenVo);
        return AjaxResult.success(list);
    }

}
